
FORGET Laddr
0 VALUE LAddr
0 VALUE LPos

: +Lpos ( n -- )
    +TO Lpos ;

: @Num ( -- n)
    1 +Lpos  Laddr Lpos +   4 NUMBER DROP  4 +LPos ;

: DoDef ( -- )
    CR ." DODEF: " 
    FFAIHM @ H !
    @Num DUP $.
    Laddr Lpos +  6 -TRAILING 2DUP TYPE CR HEADER
    6 +Lpos
    $A016 @ , , 
    H ! ;

: ParseLine ( -- ) 
    BEGIN   
        LAddr Lpos + C@  
        CASE
            ASCII 9 OF @Num H !     ENDOF \ set address
            ASCII B OF @Num ,       ENDOF \ compile cell
            ASCII : OF 999 TO LPos  ENDOF \ end of DF80 file
            ASCII 7 OF 999 to LPos  ENDOF \ checksum (end of file)
            ASCII 6 OF DoDef        ENDOF \ definition 
            1 +LPos
        ENDCASE 
    Lpos 80 > UNTIL ;

: #3fn s" DSK2.AL-TEST.OBJ     DF80SI" ;
FBUF: objFile

: #3LOAD ( "DSKx.FILE" -- )
  DEPTH 2 < ABORT" Incorrect syntax"
  #3fn DROP 21 BL FILL   #3fn DROP SWAP CMOVE
    #3fn objFile FILE   HEX
    objFile #OPEN ABORT" Cant open object file"
    BEGIN objFile #EOF? NOT WHILE
        PAD objFile #GET IF
            ." Cant read from file"  DECIMAL  ABORT THEN
        PAD 1+ TO LAddr   0 TO Lpos   
    REPEAT  objFile #CLOSE
    DECIMAL FFAIHM @ H ! ;
